﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace NerdOnRails.DynamicProxy
{
	 public interface IInvocation
	 {
		  /// <summary>
		  /// a callback which is invoked before the desired method is invoked
		  /// </summary>
		  /// <param name="methodName">Name of the method.</param>
		  /// <param name="invokedType">Type of the Object the Method is invoked on.</param>
		  /// <param name="args">The args.</param>
		  void BeforeMethodInvocation(String methodName, Type invokedType, params Object[] args);

		  /// <summary>
		  /// a callback which is invoked beforaftere the desired method was invoked
		  /// </summary>
		  /// <param name="methodName">Name of the method.</param>
		  /// <param name="invokedType">Type of the Object the Method is invoked on.</param>
		  /// <param name="result">The result.</param>
		  void AfterMethodInvocation(String methodName, Type invokedType, Object result);
	 }
}
